home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.20
/
rrequest
/
rrequest.i
< prev
next >
Wrap
Text File
|
1995-04-22
|
5KB
|
163 lines
Uses INTUITION;
{$ if not def RREQUEST_H} CONST RREQUEST_H=0;
{$ if not def LIBRARIES_ASL_H;INCL 'libraries/asl.h';endif}
{$ if not def ASL_LIB_H;INCL 'asl.lib';endif}
{$ if not def EXEC_LIB_H;INCL 'exec.lib';endif}
VAR ok,foundasl,foundarp:BOOLEAN;STATIC;
ait1,ait2,ait3,aja:Intuitext;
f:FILE;
Type
arpFileRequester = Record
FR_Hail : Str;
FR_File : Str;
FR_Dir : Str;
FR_Window : Ptr;
FR_FuncFlags : Byte;
FR_Reserved1 : Byte;
FR_Function : Ptr;
FR_Reserved2 : Long
End;
Var ARPBase : Ptr;
Library ARPBase:
-294: Function FileRequest (a0: Ptr) : Long
End;
FUNCTION OS2:BOOLEAN;
VAR lib:p_library;
BEGIN
lib:=intuitionbase;
OS2:=(lib^.lib_version>=36);
END;
PROCEDURE searchlibs;
BEGIN
foundasl:=FALSE;
foundarp:=FALSE;
reset(f,'sys:libs/asl.library');
IF IORESULT=0 THEN
BEGIN
IF OS2 THEN foundasl:=TRUE
ELSE foundasl:=FALSE;
close(f);
END;
reset(f,'sys:libs/arp.library');
IF IORESULT=0 THEN
BEGIN
foundarp:=TRUE;
close(f);
END;
END;
Procedure Filereq(Title:STRING; VAR FR_File,FR_Dir:STRING);
VAR
FR : arpFileRequester;
Begin
OpenLib (ARPBase, 'arp.library', 0);
FR_File:='';
IF (FR_Dir[(strlen(FR_Dir))]='/') THEN FR_Dir[STRLEN(FR_Dir)]:=CHR(0);
FR := arpFileRequester(Title,FR_File,FR_Dir,NIL,0,0,Nil,0);
If FileRequest(^FR)<>0 Then
Begin
IF (pos(":",FR_Dir)<>Strlen(FR_Dir)) AND (FR_Dir[(strlen(FR_Dir))]<>'/')
THEN FR_Dir:=FR_Dir+"/";
End
Else
fr_File:='';
End;
PROCEDURE noaslmessage;
BEGIN
ait1:=INTUITEXT(2,1,0,10,10,NIL,' Kann asl.library nicht finden',^ait2);
ait2:=INTUITEXT(2,1,0,10,20,NIL,' ! A C H T U N G !',^ait3);
ait3:=INTUITEXT(2,1,0,14,30,NIL,'Kein asl-Filerequester möglich',NIL);
aja:=INTUITEXT(2,1,0,5,3,NIL,' Schade ! ',NIL);
ok:=AUTOREQUEST(NIL,^ait1,NIL,^aja,0,0,350,65);
END;
PROCEDURE noarpmessage;
BEGIN
ait1:=INTUITEXT(2,1,0,10,10,NIL,' Kann arp.library nicht finden',^ait2);
ait2:=INTUITEXT(2,1,0,10,20,NIL,' ! A C H T U N G !',^ait3);
ait3:=INTUITEXT(2,1,0,14,30,NIL,'Kein arp-Filerequester möglich',NIL);
aja:=INTUITEXT(2,1,0,5,3,NIL,' Schade ! ',NIL);
ok:=AUTOREQUEST(NIL,^ait1,NIL,^aja,0,0,350,65);
END;
PROCEDURE norequestermessage(Text:STR);
VAR hilf:INTEGER;
BEGIN
IF (length(text)>30) THEN
BEGIN
hilf:=length(text) SHL 2;
ait1:=INTUITEXT(2,1,0,hilf-118,10,NIL,' ! A C H T U N G !',^ait2);
ait2:=INTUITEXT(2,1,0,hilf-110,20,NIL,'Konnte keinen Requester öffnen',^ait3);
ait3:=INTUITEXT(2,1,0,10,30,NIL,Text,NIL);
aja:=INTUITEXT(2,1,0,5,3,NIL,' OK ',NIL);
ok:=AUTOREQUEST(NIL,^ait1,NIL,^aja,0,0,350,65);
END
ELSE
BEGIN
ait1:=INTUITEXT(2,1,0,10,10,NIL,' ! A C H T U N G !',^ait2);
ait2:=INTUITEXT(2,1,0,10,20,NIL,'Konnte keinen Requester öffnen',^ait3);
ait3:=INTUITEXT(2,1,0,130-(length(text) SHL 2),30,NIL,Text,NIL);
aja:=INTUITEXT(2,1,0,5,3,NIL,' OK ',NIL);
ok:=AUTOREQUEST(NIL,^ait1,NIL,^aja,0,0,350,65);
END;
END;
PROCEDURE rrequest(Titel:String;VAR Filename,Dirname:String);
VAR Req : p_Filerequester;
Tags: ARRAY [0..5] OF Tagitem;
b:BOOLEAN;
BEGIN {1}
IF foundasl THEN
BEGIN
OpenLib(AslBase,ASLNAME,36);
IF aslbase<>NIL THEN
BEGIN
IF Dirname='' THEN Dirname:=':';
tags[0].ti_tag:=ASL_Hail;
tags[0].ti_Data:=titel;
tags[1].ti_tag:=ASL_File;
tags[1].ti_Data:=Filename;
tags[2].ti_tag:=ASL_Dir;
tags[2].ti_Data:=Dirname;
tags[3]:=tagitem(ASL_Width,280);
tags[4]:=tagitem(ASL_Topedge,40);
tags[5].ti_tag:=TAG_Done;
Req:=AllocAslRequest(ASL_Filerequest,^tags);
IF req<>NIL THEN
BEGIN {2}
b:=aslrequest(req,^tags);
IF b=FALSE THEN
BEGIN {3}
Filename:=req^.rf_File;
Dirname:=req^.rf_Dir;
IF (Dirname[length(dirname)]<>':') AND (Dirname[length(dirname)]<>'/')
THEN Dirname:=Dirname+'/';
END; {3}
FreeAslRequest(req);
END {2}
ELSE displaybeep(NIL);
Closelib(AslBase);
END;
END {1}
ELSE { arprequester }
BEGIN
IF foundarp THEN
BEGIN
Filereq(titel,Filename,Dirname);
END
ELSE noarpmessage;
END;
END;
{$endif}